package com.bookocean.domain.repository;

import com.bookocean.controller.dto.CloudHanPostDto;

import java.util.List;

/**
 * 书摘仓储接口
 * 
 * @author BookOcean
 * @since 2024-01-01
 */
public interface BookQuoteRepository {

    /**
     * 获取热门书摘列表
     * 
     * @param page 页码
     * @param pageSize 每页数量
     * @param categoryId 分类ID（可选）
     * @return 书摘列表
     */
    List<CloudHanPostDto> getHotPosts(Integer page, Integer pageSize, Integer categoryId);

    /**
     * 获取热门书摘总数
     * 
     * @param categoryId 分类ID（可选）
     * @return 总数
     */
    Long getHotPostsCount(Integer categoryId);

    /**
     * 获取最新书摘列表
     * 
     * @param page 页码
     * @param pageSize 每页数量
     * @param categoryId 分类ID（可选）
     * @return 书摘列表
     */
    List<CloudHanPostDto> getLatestPosts(Integer page, Integer pageSize, Integer categoryId);

    /**
     * 获取最新书摘总数
     * 
     * @param categoryId 分类ID（可选）
     * @return 总数
     */
    Long getLatestPostsCount(Integer categoryId);

    /**
     * 搜索书摘
     * 
     * @param keyword 搜索关键词
     * @param page 页码
     * @param pageSize 每页数量
     * @param categoryId 分类ID（可选）
     * @return 书摘列表
     */
    List<CloudHanPostDto> searchPosts(String keyword, Integer page, Integer pageSize, Integer categoryId);

    /**
     * 获取搜索结果总数
     * 
     * @param keyword 搜索关键词
     * @param categoryId 分类ID（可选）
     * @return 总数
     */
    Long searchPostsCount(String keyword, Integer categoryId);
}
